www.gusucode.com > VC++ 特殊网址访问器源代码-源码程序 > VC++ 特殊网址访问器源代码-源码程序/code/Demo3/CheckSetDlg.cpp
// CheckSetDlg.cpp : implementation file // Download by http://www.NewXing.com #include "stdafx.h" #include "Demo03.h" #include "CheckSetDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif //增加全局变量的引用声明 extern HWND gs_hWnd; ///////////////////////////////////////////////////////////////////////////// // CCheckSetDlg dialog CCheckSetDlg::CCheckSetDlg(CWnd* pParent /*=NULL*/) : CDialog(CCheckSetDlg::IDD, pParent) { //{{AFX_DATA_INIT(CCheckSetDlg) //原来的设定 //m_bCheckPic = FALSE; //m_bCheckUrl = FALSE; //修改后的设定 m_bCheckPic = TRUE; m_bCheckUrl = TRUE; //}}AFX_DATA_INIT } void CCheckSetDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CCheckSetDlg) DDX_Check(pDX, IDC_CHECK_PIC, m_bCheckPic); DDX_Check(pDX, IDC_CHECK_URL, m_bCheckUrl); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CCheckSetDlg, CDialog) //{{AFX_MSG_MAP(CCheckSetDlg) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CCheckSetDlg message handlers void CCheckSetDlg::OnOK() { // TODO: Add extra validation here //CDialog::OnOK(); //定义两个临时变量,保存原来的检测属性; BOOL m_bTempCheckUrl = m_bCheckUrl; BOOL m_bTempCheckPic = m_bCheckPic; UpdateData(TRUE); //如果检测属性发生变化,则发消息到CmainFrame,应用相应的变化 if(m_bTempCheckUrl != m_bCheckUrl) ::PostMessage(gs_hWnd,WM_SET_CHECK_URL,m_bCheckUrl,0); if(m_bTempCheckPic != m_bCheckPic) ::PostMessage(gs_hWnd,WM_SET_CHECK_PIC,m_bCheckPic,0); AfxMessageBox("设定完成!"); // 保存当前设定到注册表中: HKEY hDir = 0 ; char strStatus[10] = {'\0'}; //打开注册表 if( RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Demo03", NULL, KEY_ALL_ACCESS, &hDir) == ERROR_SUCCESS) { //如果打开注册表项成功,则直接添加键值 wsprintf(strStatus,"%2d",(int)m_bCheckUrl); RegSetValueEx(hDir,"bIsCheckUrl",0,REG_SZ,(CONST BYTE *)strStatus,sizeof(strStatus)); wsprintf(strStatus,"%2d",(int)m_bCheckPic); RegSetValueEx(hDir,"bIsCheckPic",0,REG_SZ,(CONST BYTE *)strStatus,sizeof(strStatus)); RegCloseKey(hDir); } else { //打开项失败,创建该项 RegCreateKey( HKEY_LOCAL_MACHINE, "SOFTWARE\\Demo03", &hDir ); wsprintf(strStatus,"%2d",(int)m_bCheckUrl); RegSetValueEx(hDir,"bIsCheckUrl",0,REG_SZ,(CONST BYTE *)strStatus,sizeof(strStatus)); wsprintf(strStatus,"%2d",(int)m_bCheckPic); RegSetValueEx(hDir,"bIsCheckPic",0,REG_SZ,(CONST BYTE *)strStatus,sizeof(strStatus)); RegCloseKey(hDir); } CDialog::OnOK(); } BOOL CCheckSetDlg::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here //定义相关变量 HKEY hDir = 0 ; BYTE strStatus[10]; DWORD dwType = REG_SZ; DWORD dwSize = sizeof(strStatus); //初始化strStatus memset(strStatus,0,dwSize); //打开注册表 if( RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Demo03", NULL, KEY_ALL_ACCESS, &hDir) == ERROR_SUCCESS) { //如果打开注册表项成功,获取键值,赋初值 if( RegQueryValueEx( hDir, "bIsCheckUrl", NULL, &dwType, strStatus, &dwSize ) == ERROR_SUCCESS ) { //memcpy(strNum2,strNum,sizeof(strNum2)); m_bCheckUrl = (BOOL)atoi((char *)strStatus); } else { m_bCheckUrl = TRUE; //默认为启动检测 } if( RegQueryValueEx( hDir, "bIsCheckPic", NULL, &dwType, strStatus, &dwSize ) == ERROR_SUCCESS ) { //memcpy(strNum2,strNum,sizeof(strNum2)); m_bCheckPic = (BOOL)atoi((char *)strStatus); } else { m_bCheckPic = TRUE; //默认为启动检测 } RegCloseKey(hDir); } else { //如果打开注册表项失败,给默认值. m_bCheckUrl = TRUE; m_bCheckPic = TRUE; } //将设定应用到对话框控件中 UpdateData(FALSE); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }